স্প্রিং বুট (Spring Boot) ORM ব্যবহার করে ডাটাবেস সম্পর্কিত বিভিন্ন কার্যক্রম সহজে পরিচালনা করা যায়। কিন্তু প্রকৃত ডাটাবেস ব্যবহারের সময় সিস্টেমের পারফরম্যান্স ও স্থিতিশীলতা পরীক্ষা করা কঠিন হতে পারে। এই কারণে, ইন-মেমরি ডাটাবেস ব্যবহার করে টেস্টিং একটি কার্যকরী পদ্ধতি। H2 ডাটাবেস একটি জনপ্রিয় ইন-মেমরি ডাটাবেস যা স্প্রিং বুট প্রজেক্টে দ্রুত টেস্টিং পরিচালনার জন্য ব্যবহৃত হয়। H2 ডাটাবেসের সবচেয়ে বড় সুবিধা হলো এটি টেস্টিং এর জন্য কনফিগারেশনে সহজ, দ্রুত এবং কম রিসোর্স ব্যবহার করে কাজ করে।
H2 ডাটাবেসের সুবিধা
H2 ডাটাবেস ইন-মেমরি ডাটাবেস হিসেবে অনেক সুবিধা প্রদান করে:
- দ্রুত ডাটাবেস ইন্সট্যান্স: এটি মেমরি রিসোর্স ব্যবহার করে ডাটাবেস চালায়, ফলে ডাটাবেস ইনস্ট্যান্সের জন্য কোনো স্টোরেজ প্রয়োজন হয় না।
- টেস্টিং সুবিধা: ইন-মেমরি ডাটাবেস ব্যবহার করে সহজে অটোমেটেড টেস্ট করা যায় এবং টেস্টের শেষে ডাটাবেস পরিষ্কার হয়ে যায়।
- কমপ্যাক্ট এবং লাইটওয়েট: H2 ডাটাবেস ছোট এবং ফাস্ট, যা স্প্রিং বুট অ্যাপ্লিকেশনগুলোতে দ্রুত টেস্টিং করার জন্য উপযুক্ত।
H2 ডাটাবেস কনফিগারেশন
স্প্রিং বুটে H2 ডাটাবেস কনফিগার করা খুবই সহজ। প্রাথমিকভাবে, H2 ডাটাবেসকে মেমরি হিসেবে কনফিগার করা হয় এবং টেস্টিংয়ের জন্য এটি অটোমেটিক্যালি ডাটা প্রোসেসিং করতে সাহায্য করে।
Maven বা Gradle ডিপেনডেন্সি যুক্ত করা
H2 ডাটাবেসের জন্য প্রয়োজনীয় ডিপেনডেন্সি pom.xml বা build.gradle ফাইলে যোগ করতে হবে।
Maven (pom.xml)
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>test</scope>
</dependency>
Gradle (build.gradle)
testImplementation 'com.h2database:h2'
ইন-মেমরি টেস্টিং কনফিগারেশন
স্প্রিং বুট কনফিগারেশনে ইন-মেমরি ডাটাবেস ব্যবহার করতে application.properties বা application.yml ফাইলের মাধ্যমে H2 ডাটাবেস কনফিগার করা যায়।
application.properties কনফিগারেশন:
# H2 ইন-মেমরি ডাটাবেস কনফিগারেশন
spring.datasource.url=jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=password
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.jpa.hibernate.ddl-auto=update
spring.h2.console.enabled=true
এখানে, spring.datasource.url এ mem:testdb ব্যবহার করা হয়েছে, যার ফলে ডাটাবেসটি শুধুমাত্র মেমরিতে থাকবে এবং অ্যাপ্লিকেশন বন্ধ হওয়ার পর ডাটাবেসটি অটোমেটিক্যালি মুছে যাবে।
ইন-মেমরি টেস্ট কেস উদাহরণ
স্প্রিং বুটের ইন-মেমরি ডাটাবেস টেস্টিং করতে @DataJpaTest অ্যানোটেশন ব্যবহার করা হয়। এই অ্যানোটেশনটি শুধুমাত্র JPA সম্পর্কিত টেস্টিং চালায়, অর্থাৎ এটি ডাটাবেস, রেপোজিটরি, এবং ডেটাবেস সম্পর্কিত অন্যান্য কার্যক্রম পরীক্ষার জন্য ব্যবহৃত হয়।
উদাহরণ টেস্ট ক্লাস:
@RunWith(SpringRunner.class)
@DataJpaTest
public class ProductRepositoryTest {
@Autowired
private TestEntityManager entityManager;
@Autowired
private ProductRepository productRepository;
@Test
public void testCreateProduct() {
Product product = new Product("Test Product", 100.0);
entityManager.persist(product);
entityManager.flush();
Product foundProduct = productRepository.findByName("Test Product");
assertThat(foundProduct.getName()).isEqualTo(product.getName());
}
@Test
public void testFindAllProducts() {
Product product1 = new Product("Product 1", 50.0);
Product product2 = new Product("Product 2", 75.0);
entityManager.persist(product1);
entityManager.persist(product2);
entityManager.flush();
List<Product> allProducts = productRepository.findAll();
assertThat(allProducts).hasSize(2).extracting(Product::getName).contains("Product 1", "Product 2");
}
}
এখানে @DataJpaTest অ্যানোটেশনটি স্প্রিং কনটেইনারে JPA টেস্টিং প্রক্রিয়া পরিচালনা করে এবং H2 ইন-মেমরি ডাটাবেস ব্যবহার করে টেস্ট ফলাফল সরবরাহ করে।
সারাংশ
H2 ইন-মেমরি ডাটাবেস স্প্রিং বুট ORM টেস্টিংয়ের জন্য একটি শক্তিশালী এবং কার্যকরী উপায়। এটি ডাটাবেসের জন্য কোনো স্টোরেজ প্রয়োজন না করে দ্রুত এবং সহজে টেস্ট পরিচালনা করতে সহায়তা করে। H2 ডাটাবেস ব্যবহার করে ইন-মেমরি টেস্টিং কনফিগার করা এবং এর মাধ্যমে JPA সম্পর্কিত কার্যক্রম পরীক্ষা করা সহজ। এই প্রক্রিয়া অটোমেটিক্যালি ডেটাবেস পরিষ্কার করে এবং টেস্ট চলাকালীন সময়ে দ্রুত ফলাফল প্রদান করে।
Read more